Skip to main content

Launching Browsers in Selenium

Launching browsers correctly is the first real interaction with Selenium WebDriver. This section focuses on clean, flexible, and framework-ready browser initialization.


WebDriver Interface vs Browser Driver Classes

In Selenium, we always code to the WebDriver interface:

WebDriver driver = new ChromeDriver();

Why This Matters

  • Supports polymorphism
  • Allows easy browser switching
  • Improves framework flexibility

❌ Avoid coding directly to driver classes everywhere.


Launching Chrome Browser

WebDriverManager.chromedriver().setup();
WebDriver driver = new ChromeDriver();
driver.get("https://example.com");

Launching Firefox Browser

WebDriverManager.firefoxdriver().setup();
WebDriver driver = new FirefoxDriver();

Launching Edge Browser

WebDriverManager.edgedriver().setup();
WebDriver driver = new EdgeDriver();

Headless Browser Execution

Headless mode runs browsers without UI, commonly used in CI.

ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");

WebDriver driver = new ChromeDriver(options);

Browser Options (Introduction)

Browser options allow:

  • Disabling notifications
  • Running headless
  • Setting download paths
  • Accepting insecure certificates

(Options will be covered in detail in a later section.)


Best Practices ✅

  • Always use WebDriverManager
  • Use WebDriver interface
  • Centralize browser creation
  • Support headless execution for CI

Common Mistakes ❌

  • Hardcoding driver paths
  • Mixing browser logic in tests
  • Creating multiple drivers unnecessarily
  • Ignoring headless execution needs

Key Takeaways

  • WebDriver is the core interface
  • Browser drivers are interchangeable
  • Headless mode is CI-friendly
  • Clean browser setup improves stability